package br.com.helpdesk.controller;

import java.util.ArrayList;
import java.util.List;
//import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
//import javax.faces.context.FacesContext;
//import javax.faces.event.ActionEvent;

//import org.primefaces.context.RequestContext;

import br.com.helpdesk.model.Usuario;

@SuppressWarnings({"unchecked","rawtypes"})
@ManagedBean(name="beanUsuario")
@RequestScoped
public class UsuarioBean  implements IMetodos{
	
	Usuario usuario = null;
	Usuario selectedUsuario = null;
	private List<Usuario> filtrarUsuario;
	
	public UsuarioBean(){
		usuario = new Usuario();		
		selectedUsuario = new Usuario();
	}
		
	public Usuario getUsuario() {
		return usuario;
	}

	public Usuario getSelectedUsuario() {
		return selectedUsuario;
	}

	public void setSelectedUsuario(Usuario selectedUsuario) {
		this.selectedUsuario = selectedUsuario;
	}

	public List<Usuario> getFiltrarUsuario() {
		return filtrarUsuario;
	}

	public void setFiltrarUsuario(List<Usuario> filtrarUsuario) {
		this.filtrarUsuario = filtrarUsuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	@Override
	public boolean inserir() {
		//usuario.setU_acesso(Integer.valueOf(sessaoBean.getCodigo().toString()));
		//usuario.setU_acesso(sessaoBean.getCodigo());
		DaoHelper dao = new DaoHelper(usuario);			
		return dao.inserir();
	}

	@Override
	public boolean alterar() {		
		//selectedUsuario.setU_acesso(Integer.valueOf(sessaoBean.getCodigo().toString()));
		//selectedUsuario.setU_acesso(sessaoBean.getCodigo());
		usuario.setCodigo(selectedUsuario.getCodigo());
		DaoHelper dao = new DaoHelper(usuario);			
		return dao.alterar();
	}

	@Override
	public boolean excluir() {
		DaoHelper dao = new DaoHelper(selectedUsuario);			
		return dao.excluir();
	}
	
	@Override
	public List<Usuario> getListar() {				
		DaoHelper dao = new DaoHelper(usuario);			
		List<Usuario> lista = new ArrayList<Usuario>();
		List<Usuario> listaRetorno = new ArrayList<Usuario>();
		
		lista = dao.getListar();
		
		for (Usuario usu : lista) {
			Usuario nLista = new Usuario();
		   		nLista.setCodigo(usu.getCodigo());
				nLista.setNome(usu.getNome());
				nLista.setLogin(usu.getLogin());
				nLista.setSenha(usu.getSenha());
				nLista.setGrupo(usu.getGrupo());
				nLista.setAtivo(usu.isAtivo());
				listaRetorno.add(nLista);
		}
		return  listaRetorno;
	}

	@Override
	public void gravar() {
		if(selectedUsuario == null) 
			selectedUsuario = new Usuario();
		if(selectedUsuario.getCodigo() <= 0 ){
		 inserir();
		}else alterar();		
	}
	
	public void limpar(){
		selectedUsuario.setCodigo(0);		
	}
	
	public void editar(){
		usuario.setCodigo(selectedUsuario.getCodigo());
		usuario.setNome(selectedUsuario.getNome());
	}
}
